package com.hsnn.medstgmini.pro.base.service;

import java.io.FileNotFoundException;
import java.util.List;
import java.util.Map;

import org.springframework.web.multipart.MultipartFile;

import com.hsnn.medstgmini.base.dict.model.DicSys;
import com.hsnn.medstgmini.pro.base.model.BaseDelrelation;
import com.hsnn.medstgmini.pro.base.model.BaseGoods;
import com.hsnn.medstgmini.pro.base.model.form.BaseDelrelationForm;
import com.hsnn.medstgmini.pro.base.model.form.FileUploadResult;
import com.hsnn.medstgmini.pro.project.model.BidProject;
import com.hsnn.medstgmini.sys.model.SysUser;
import com.hsnn.medstgmini.trading.pur.model.form.DrugNoJNoX;
import com.hsnn.medstgmini.util.Pagination;

public interface BaseGoodsManager {

	/**
	 * 
	 *@category 跳转到商品列表页面
	 *@author 邱磊
	 *@date 2015年6月17日 下午8:52:48
	 *@param form
	 *@return
	 */
	public Pagination getDataList(Pagination page);
	
	/**
	 * @category 卫生局查看商品目录
	 * @date 2015年11月16日
	 * @param page
	 * @return
	 */
	Pagination getGoodsListByWSJ(Pagination page, SysUser loginUser);
	
	/**
	 * 
	 *@category 启用停用
	 *@author 邱磊
	 *@date 2015年6月17日 下午8:53:29
	 *@param goodsCode 商品码
	 *@param status 1：启用，0：停用
	 *@return
	 */
	public void switchStatus(String goodsCode,Short status, String updUser);
	/**
	 * 
	 *@category 批量启用停用
	 *@author 邱磊
	 *@date 2015年6月17日 下午8:54:03
	 *@param list 需要启用、停用的数据
	 *@return
	 */
	public void batchSwitchStatus(List<BaseGoods> list);
	/**
	 * 
	 *@category 新增商品
	 *@author 邱磊
	 *@date 2015年6月17日 下午8:54:37
	 *@param data
	 *@return
	 */
	public void addData(BaseGoods data);
	/**
	 * 
	 *@category 批量导入，读取Excel
	 *@author 邱磊
	 *@date 2015年6月17日 下午8:54:52
	 *@param goodFile
	 *@return
	 */
	public void bathImport(String fileId,SysUser user) throws FileNotFoundException;
	
	public FileUploadResult uploadFile(MultipartFile goodFile,Pagination page);
	/**
	 * 
	 *@category 批量导入
	 *@author 邱磊
	 *@date 2015年6月17日 下午8:55:31
	 *@param list 有效数据List
	 *@return
	 */
	public void bathImport(List<BaseGoods> list);
	/**
	 * 
	 *@category 查询所有的商品列表
	 *@author 邱磊
	 *@date 2015年6月17日 下午9:15:04
	 *@return
	 */
	public List<BaseGoods> getBaseGoodsList();
	/**
	 * 
	 *@category 查询所有标准库药品
	 *@author 邱磊
	 *@date 2015年6月17日 下午9:15:20
	 *@return
	 */
	public List<Object[]> getStdDrugList();
	/**
	 * 
	 *@category 查询所有项目
	 *@author 邱磊
	 *@date 2015年6月17日 下午9:15:37
	 *@return
	 */
	public List<BidProject> getBidProjectList();
	/**
	 * 
	 *@category 查询所有商品分类字典信息
	 *@author 邱磊
	 *@date 2015年6月17日 下午9:16:08
	 *@return
	 */
	public List<DicSys> getDicSysList();
	/**
	 * 
	 *@category 获取生产企业设置商品配送关系列表
	 *@author 邱磊
	 *@date 2015年6月17日 上午11:04:22
	 *@param page 
	 *@return
	 */
	Pagination getProDelDrugDataList(Pagination page);
	/**
	 * 
	 *@category 根据区域设置配送企业列表
	 *@author 邱磊
	 *@date 2015年6月17日 下午4:22:16
	 *@param page 
	 *@return
	 */
	Pagination getBaseGoodsDelByAreaList(Pagination page);
	/**
	 * 
	 *@category 根据区域设置配送企业
	 *@author 邱磊
	 *@date 2015年6月17日 下午4:58:22
	 *@param list
	 *@return
	 */
	void setDelByArea(List<BaseDelrelation> list, Map<String, String> map);
	void setDelByComp(List<BaseDelrelation> list, Map<String, String> map);
	
	void removeDel(Pagination page);
	/**
	 * 
	 *@category 根据企业设置配送区域的区域
	 *@author 邱磊
	 *@date 2015年6月17日 下午8:55:56
	 *@param page 
	 *@return
	 */
	public Pagination getAreaList(Pagination page);
	/**
	 * 
	 *@category 查询当前生产企业的所有药品配送关系
	 *@author 邱磊
	 *@date 2015年6月18日 上午9:59:52
	 *@param page
	 *@return
	 */
	public Pagination getBaseDelByCompList(Pagination page);
	
	public Pagination getBaseDelCentreByCompList(Pagination page);
	/**
	 * 
	 *@category 查询配送关系日志列表
	 *@author 邱磊
	 *@date 2015年6月18日 上午11:21:20
	 *@param page
	 *@return
	 */
	public Pagination getBaseDelByCompLogList(Pagination page);
	
	public int getAreaDelCount(String areaCode,String goodsCode);
	public int getAreaMaxDelCount();
	public Pagination getSetDelComp(Pagination page);
	
	public Pagination getBaseDelerationLogList(Pagination page);
	
	public Pagination getDelComp(Pagination page);
	
	public Pagination getDelArea(Pagination page);
	public Pagination getSetDelArea(Pagination page);
	public Pagination getSetDelAreaLog(Pagination page);
	public Map<String, Object> getBaseGoodsByCode(String goodsCode);
	
	public Pagination getImportFileDataList(Pagination page);
	/**
	 * 
	 *@category 获取预览列表
	 *@author 邱磊
	 *@date 2015年11月12日 上午8:32:59
	 *@param
	 */
	public Pagination getImportGoodsView(Pagination page);
	
//	public void updateImportFileStatus(int status,String fileId);
	
	public int importGoods(String fileId);
	public void deleteImportGoods(String fileId);
	
	public Pagination checkReImport(Pagination page);
	
	public Map<String, Object> getGoodsByCode(String goodsCode);

	Pagination getDelCompByLinxuan(Pagination page);

	Pagination getDelAreaByLinxuan(Pagination page);

	Pagination getAreaListByLinxuan(Pagination page);

	Pagination getBaseGoodsDelByLinxuan(Pagination page);
	
		/**
	 * 
	 *@category 获取药品配送关系列表(生产企业)
	 *@author 应晓川
	 *@date 2015年11月23日17:56:51
	 *@param page 
	 *@return
	 */
	Pagination getProjDrugList(Pagination page);
	
	/**
	 *@category 判断是否有权限去按配送企业选择医疗机构(生产企业)
	 *@author 应晓川
	 *@date 2015年11月23日19:27:25
	 *@param page 
	 *@return
	 */
	boolean isDelrelation(Pagination page);
	
		/**
	 *@category 获取配送企业列表(生产企业)
	 *@author 应晓川
	 *@date 2015年11月24日08:36:24
	 *@param page 
	 *@return
	 */
	Pagination getDelCompList(Pagination page);
	
	/**
	 *@category 获取医疗机构列表(生产企业)
	 *@author 应晓川
	 *@date 2015年11月24日08:36:24
	 *@param page 
	 *@return
	 */
	Pagination getHospList(Pagination page);
	
	Pagination getDelCompListByLinxuan(Pagination page);
	
	
	/**
	 *@category 获取按配送企业已经选择了的医疗机构列表(生产企业)
	 *@author 应晓川
	 *@date 2015年11月24日13:22:01
	 *@param page 
	 *@return
	 */
	Pagination getHospJspList(Pagination page);
	
	/**
	 *@category 获取按医疗机构已经选择了的配送企业列表(生产企业)
	 *@author 应晓川
	 *@date 2015年11月24日13:22:51
	 *@param page 
	 *@return
	 */
	Pagination getCompJspList(Pagination page);
	
	
	/**
	 *@category 按配送企业设置未选择的医疗机构(生产企业)
	 *@author 应晓川
	 *@date 2015年11月24日13:26:52
	 *@param page 
	 *@return
	 */
	Pagination getDelHospJspList(Pagination page);
	
	/**
	 *@category 按医疗机构设置未选择的配送企业(生产企业)
	 *@author 应晓川
	 *@date 2015年11月24日13:27:15
	 *@param page 
	 *@return
	 */
	Pagination getDelCompJspList(Pagination page);
	
	/**
	 *@category  按配送企业设置医疗机构 (生产企业)
	 *@author 应晓川
	 *@date 2015年11月24日16:51:28
	 *@return
	 */
	void setDelWithHosp(Pagination page);
	
	/**
	 *@category  按医疗机构设置配送企业 (生产企业)
	 *@author 应晓川
	 *@date 2015年11月24日16:51:28
	 *@return
	 */
	void setDelWithComp(Pagination page);

	Pagination getTheDelCompList(Pagination page);

	Pagination getDelRelationHospList(Pagination page);

	Pagination getTheDelCompListByLinxuan(Pagination page);

	Pagination getDelRelationHospLog(Pagination page);

	Pagination getNoSetDelRelHospList(Pagination page);

	Pagination getNoSetDelRelHospListByLinxuan(Pagination page);

	int setHospByDelComp(List<Map<String, String>> list, String updUser);
	
	Pagination getDelRelHospLog(Pagination page);
	Pagination getDelRelCompLog(Pagination page);
	public Pagination getHaveSetDel(Pagination page);
	public void batchDeleteHaveSetDel(String goodsCode,List<BaseDelrelationForm> list,String userId);
	public Pagination getGoodsSelectComp(Pagination page);
	public void setBaseDelRelation(String goodsCode,List<BaseDelrelationForm> list,String userId,String gzfjydel);
	
	/**
	 * @category 保存不竞不限药品信息
	 * @author 韩守松
	 * @date   2016年1月13日
	 * @param  @param goods
	 */
	public void save(BaseGoods goods,SysUser user);
	
	/**
	 * @category 获取不竞不限商品数据信息
	 * @author 韩守松
	 * @date   2016年1月14日
	 * @param  @param page
	 * @param  @param data
	 * @param  @return
	 */
	public Pagination getNoJNoXGoodsData(Pagination page,DrugNoJNoX data);
}
